#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：pytest_allure_pytest-html_study 
@File    ：07_allure_标记用法.py
@IDE     ：PyCharm 
@Author  ：XiaoDengYa
@Date    ：2021/6/3/003 15:57 
"""

"""

前言
前面几篇文章主要介绍了allure的特性，这篇文章我们就来讲下allure的标记用法
有时候我们写pytest的时候，会用到 @pytest.mark 但并不会显示在allure报告上
而allure也提供了三种类型的标记装饰器，它们是可以显示在allure报告上的
 

allure的标记装饰器
BDD样式的标记装饰器
优先级（严重程度）标记装饰器
自定义标记装饰器

BDD标记装饰器
提供了三个装饰器

@allure.epic：敏捷里面的概念，定义史诗，往下是 feature
@allure.feature：功能点的描述，理解成模块往下是 story
@allure.story：故事，往下是 title
"""


import allure


def test_without_any_annotations_that_wont_be_executed():
    pass


@allure.story('epic_1')
def test_with_epic_1():
    pass


@allure.story('story_1')
def test_with_story_1():
    pass


@allure.story('story_2')
def test_with_story_2():
    pass


@allure.feature('feature_2')
@allure.story('story_2')
def test_with_story_2_and_feature_2():
    pass

"""
知识点
story 是 feature 的子集，当测试用例有 @allure.feature、@allure.story 时，在报告上会先显示 feature，点开之后再显示 story【可以想象成，安徒生童话（feature）有很多个童话故事（story）】
如果不加 @allure.feature、@allure.story 时，在Behaviors栏目下，测试用例都不会分类显示，当用例多的时候可能看的花里胡哨
"""


#栗子二
# 前言
# 这里应用了包括前面所讲的全部装饰器

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
import os

import allure
import pytest


@pytest.fixture(scope="session")
def login_fixture():
    print("=== 前置登录 ===")


@allure.step("步骤1")
def step_1():
    print("操作步骤---------------1")


@allure.step("步骤2")
def step_2():
    print("操作步骤---------------2")


@allure.step("步骤3")
def step_3():
    print("操作步骤---------------3")


@allure.epic("epic 相当于总体描述")
@allure.feature("测试模块")
class TestAllureALL:

    @allure.testcase("https://www.cnblogs.com/poloyy/", '测试用例,点我一下')
    @allure.issue("https://www.cnblogs.com/poloyy/p/12219145.html", 'Bug 链接,点我一下')
    @allure.title("用例的标题")
    @allure.story("story one")
    @allure.severity("critical")
    def test_case_1(self, login_fixture):
        
        小菠萝测试笔记地址：https://www.cnblogs.com/poloyy/
        
        print("测试用例1")
        step_1()
        step_2()

    @allure.story("story two")
    def test_case_2(self, login_fixture):
        print("测试用例2")
        step_1()
        step_3()


@allure.epic("另一个 epic")
@allure.feature("查找模块")
class TestAllureALL2:
    @allure.story("story three")
    def test_case_3(self, login_fixture):
        print("测试用例3")
        step_1()

    @allure.story("story four")
    def test_case_4(self, login_fixture):
        print("测试用例4")
        step_3()


if __name__ == '__main__':
    pytest.main(['-s', '-q', '--alluredir=report'])
    os.system('allure generate report/ -o report/html')

"""
